Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

< Назад, к странице 174
Вперёд, к странице 176 >

Зарезервированные слова, системные переменные и спецсимволы

Операции

Список операций для плеера версии 5.7.0 в порядке возрастания приоритета:

&

OR

AND

OBJ, LOC, NO

=, <, >, !, <>, <=, >=, =<, =>

+, -

MOD

*, /

+, - (унарные)

Операции записанные на одной строке имеют одинаковый приоритет и выполняются по порядку слева направо, если присутствуют на одном уровне в выражении.

Операции в скобках имеют приоритет перед другими операциями.

Вычисение значений функций имеет приоритет перед всеми операциями.

Верным считается числовое выражение, значение которого отлично от 0. При значении 0 выражение считается ложным. Для значения "верно" настоятельно рекомендуется использовать -1, т.к. только в этом случае будут адекватно работать побитовые операторы в роли логических.

В более новых версиях плеера приоритет некоторых операций изменён.

* (умножение)

* — арифметическая операция "УМНОЖЕНИЕ". Перемножает два числа. Общая запись:

    [#выражение 1]*[#выражение 2]

, где [#выражение 1] и [#выражение 2] — два любых числовых значения, или выражения. Результатом работы операции является произведение двух чисел.

Примеры:

    2*2 & ! вернёт 4
    4*2 & ! вернёт 8
    17*5 & ! вернёт 85
    37*100 & ! вернёт 3700

*= (умножение-присвоение)

*= — операция "УМНОЖЕНИЕ-ПРИСВОЕНИЕ". Сочетает в себе операции присвоения и умножения. Умножает значение указанной переменной на определённое число и возвращает результат той же переменной. Общая запись:

    ИМЯ_МАССИВА*=[#выражение 1]

, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [#выражение 1] — любое числовое значение или выражение.

Аналогично конструкции:

        ИМЯ_МАССИВА=ИМЯ_МАССИВА*[#выражение 1]

Пример:

    ! мы заменяем две операции: присвоения и умножение
    warrior=warrior*2
    ! на умножение-присвоение (действие аналогично)
    warrior*=2

+ (сложение)

+ — арифметическая операция "СЛОЖЕНИЕ". Суммирует два числа. Общая запись:

    [выражение 1]+[выражение 2]

, где [выражение 1] и [выражение 2] — два любых значения, или выражения. Результатом работы операции является сумма двух значений.

Примеры:

    2+2 & ! вернёт 4
    4+2 & ! вернёт 6
    17+5 & ! вернёт 22
    37+100 & ! вернёт 137

Можно "суммировать" и текстовые значения. В этом случае операция работает как конкатенация:

    ! на экран будет выведена строка "2627"
    "26"+"27"

+= (сложение-присвоение)

+= (инкремент) — операция "ИНКРЕМЕНТ", сочетающая в себе операции присвоения и сложения. Прибавляет к текущему значению переменной указанное значение. Общая запись:

    ИМЯ_МАССИВА+=[выражение 1]

, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [выражение 1] — любое значение или выражение.

Аналогично конструкции:

    ИМЯ_МАССИВА=ИМЯ_МАССИВА+[выражение 1]

Пример:

        ! мы заменяем две операции: присвоения и сложения
        warrior=warrior+15
        ! на инкремент (действие аналогично)
        warrior+=15

Возможно так же проводить инкремент со строковыми значениями, работает как конкатенация:

        $text+=" (может быть тут что-то написано)"

P.S.: Инкремент — во многих языках программирования это операция, которая выполняет увеличение переменной. Чаще всего под инкрементом подразумевается увеличение переменной на 1 единицу.

- (вычитание)

- — арифметическая операция "ВЫЧИТАНИЕ". Вычитает одно число из другого. Общая запись:

    [выражение 1]-[выражение 2]

, где [выражение 1] и [выражение 2] — два любых значения, или выражения. Результатом работы операции является разность двух значений.

Примеры:

    2-2 & ! вернёт 0
    4-2 & ! вернёт 2
    17-5 & ! вернёт 12
    37-100 & ! вернёт -63

-= (вычитание)

-= (декремент) — операция "ДЕКРЕМЕНТ", сочетающая в себе операции присвоения и вычитания. Вычитает из текущего значения переменной указанное значение. Общая запись:

    ИМЯ_МАССИВА-=[#выражение 1]

, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [#выражение 1] — любое числовое значение или выражение.

Аналогично конструкции:

    ИМЯ_МАССИВА=ИМЯ_МАССИВА-[#выражение 1]

Пример:

    ! мы заменяем две операции: присвоения и вычитания
    warrior=warrior-15
    ! на декремент (действие аналогично)
    warrior-=15

P.S.: Декремент — во многих языках программирования это операция, которая выполняет уменьшение переменной. Чаще всего под декрементом подразумевается уменьшение переменной на 1 единицу.

- и + (унарные)

унарные + и - — унарные операции. Общая запись:

    +[#выражение]
    -[#выражение]

, где [#выражение] — любое числовое значение или выражение. Результатом работы этих операций является то же самое значение, только в случае с унарным минусом — с противоположным знаком.

Примеры:

    -2 & ! вернёт -2
    -(3+6) & ! вернёт -9
    +2 & ! вернёт 2
    +(3+6) & ! вернёт 9
    -(-27) & ! вернёт 27

/ (деление)

/ — арифметическая операция "ДЕЛЕНИЕ". Общая запись:

    [#выражение 1]/[#выражение 2]

, где [#выражение 1] и [#выражение 2] — два любых числовых значения, или выражения. Значение [#выражение 2] не должно быть равным нулю. Результатом работы операции является частное от деления двух чисел.

Поскольку QSP поддерживает только целочисленные значения, деление производится так же нацело, без округления, с отсечением дробной части.

Примеры:

    2/2 & ! вернёт 1
    4/2 & ! вернёт 2
    17*5 & ! вернёт 3
    37*100 & ! вернёт 0

/= (деление-присвоение)

/= — операция "ДЕЛЕНИЕ-ПРИСВОЕНИЕ". Сочетает в себе операции присвоения и деления. Делит значение указанной переменной на определённое число и возвращает результат той же переменной. Общая запись:

    ИМЯ_МАССИВА/=[#выражение 1]

, где ИМЯ_МАССИВА — это название переменной (без кавычек), или название массива с указанием ячейки, а [#выражение 1] — любое числовое значение или выражение.

Аналогично конструкции:

    ИМЯ_МАССИВА=ИМЯ_МАССИВА/[#выражение 1]

Пример:

    ! мы заменяем две операции: присвоения и деления
    warrior=warrior/2
    ! на деление-присвоение (действие аналогично)
    warrior/=2

< (меньше)

< — операция сравнения "МЕНЬШЕ". Общая запись:

    [выражение_1]<[выражение_2]

Если значение выражения [выражение_1] меньше значения выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое меньше второго.

Примеры:

    ! 2 меньше 4 — вернёт -1
    2<4
    ! 5 не меньше 5 — вернёт 0
    5<5
    ! 7 не меньше 3 — вернёт 0
    7<3

Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.

    "a"<"z"         & ! верно
    "z"<"zz"     & ! верно
    "aaaaaa"<"z" & ! верно

<= (меньше либо равно)

<= — операция сравнения "МЕНЬШЕ ЛИБО РАВНО". Общая запись:

    [выражение_1]<=[выражение_2]

Если значение выражения [выражение_1] меньше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое меньше второго, либо равно ему.

Примеры:

    ! 2 меньше 4 — вернёт -1
    2<=4
    ! 5 равно 5 — вернёт -1
    5<=5
    ! 7 не меньше трёх и не равно ему
    7<=3 & ! вернёт 0

Аналогично "=<" и конструкциям:

    ([выражение_1]<[выражение_2]) or ([выражение_1]=[выражение_2])
    no [выражение_1]>[выражение_2]

Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.

    "a"<="z"    & ! верно
    "z"<="zz"    & ! верно
    "aaaaaa"<="z" & ! верно
    "z"<="z" & ! верно

<> (не равно)

<> — операция сравнения "НЕ РАВНО". Общая запись:

    [выражение_1]<>[выражение_2]

Если значение выражения [выражение_1] не равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если выражения не равны.

Аналогично "!", или конструкции:

    no [выражение_1]=[выражение_2]

Примеры:

    ! 2 не равно 4 — вернёт -1
    2<>4
    ! 5 равно 5 — вернёт 0
    5<>5

Можно сравнивать и строковые значения:

    "abc"<>"def" & ! вернёт -1
    "abc"<>"abc" & ! вернёт 0

= (равно)

= — операция сравнения "РАВНО". Общая запись:

    [выражение_1]=[выражение_2]

Если значение выражения [выражение_1] равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если выражения равны.

Аналогично конструкции:

    no [выражение_1]<>[выражение_2]

Примеры:

    ! 2 не равно 4 — вернёт 0
    (2=4)
    ! 5 равно 5 — вернёт -1
    (5=5)

Можно сравнивать и строковые значения:

    ("abc"="def") & ! вернёт 0
    ("abc"="abc") & ! вернёт -1

Не путать с операцией присвоения.

= (присвоение)

= — операция присвоения. Общая запись:

    ИМЯ_МАССИВА=[значение]

, где ИМЯ_МАССИВА — название переменной (не в кавычках), или название массива с указанием ячейки (не в кавычках), [значение] — любое значение или выражение.

Примеры:

    ! переменной BOX присваиваем значение 13
    BOX=13
    ! переменной $text присваиваем значение "Строка текста"
    $text="Строка текста"
    ! нулевой ячейке массива day присваивается значение 365
    day[0]=365

Имена строковых переменных/массивов должны начинаться с символа $.

Внимание! Операцию присвоения не следует путать с операцией сравнения "РАВНО", хотя они очень похожи:

    ! операция присвоения
    alukard=1000
    ! операция сравнения
    (alukard=1000)

В этом случае плеер понимает, что внутри скобок находится операция сравнения, потому что скобки используются только для записи выражений. Запись:

    "abc"="abc"

синтаксически ошибочна. Плеер выдаст ошибку: недопустимое название переменной/массива. Так как в этом случае он не понимает, что это операция сравнения.

Если перед операцией сравнения стоит оператор, скобки можно не писать:

    if alukard=150: *pl "Не хватает сил"

=< (равно либо меньше)

=< — операция сравнения "РАВНО ЛИБО МЕНЬШЕ". Общая запись:

    [выражение_1]=<[выражение_2]

Если значение выражения [выражение_1] меньше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое меньше второго, либо равно ему.

Примеры:

    ! 2 меньше 4 — вернёт -1
    2=<4
    ! 5 равно 5 — вернёт -1
    5=<5
    ! 7 не меньше трёх и не равно ему
    7=<3 & ! вернёт 0

Аналогично "<=" и конструкциям:

    ([выражение_1]<[выражение_2]) or ([выражение_1]=[выражение_2])
    no [выражение_1]>[выражение_2]

Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.

    "a"=<"z"    & ! верно
    "z"=<"zz"    & ! верно
    "aaaaaa"=<"z" & ! верно
    "z"=<"z" & ! верно

Данная запись, хотя и допустима в QSP, к использованию не рекомендуется. Используйте "<= (меньше либо равно)" вместо этого.

=> (равно или больше)

=> — операция сравнения "РАВНО ИЛИ БОЛЬШЕ". Общая запись:

    [выражение_1]=>[выражение_2]

Если значение выражения [выражение_1] больше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое больше второго, либо равно ему.

Примеры:

    ! 2 не меньше и не равно 4 — вернёт 0
    2=>4
    ! 5 равно 5 — вернёт -1
    5=>5
    ! 7 больше 3
    7=>3 & ! вернёт -1

Аналогично ">=" и конструкциям:

    ([выражение_1]>[выражение_2]) or ([выражение_1]=[выражение_2])
    no [выражение_1]<[выражение_2]

Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.

    "z"=>"a"    & ! верно
    "zz"=>"z"    & ! верно
    "z"=>"aaaaaa" & ! верно
    "z"=>"z" & ! верно

Данная запись, хотя и допустима в QSP, к использованию не рекомендуется. Используйте ">= (больше либо равно)" вместо этого.

> (больше)

> — операция сравнения "БОЛЬШЕ". Общая запись:

    [выражение_1]>[выражение_2]

Если значение выражения [выражение_1] больше значения выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое больше второго.

Примеры:

    ! 2 не больше 4 — вернёт 0
    2>4
    ! 5 не больше 5 — вернёт 0
    5>5
    ! 7 больше 3 — вернёт -1
    7>3

Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.

    "z">"a"         & ! верно
    "zz">"z"     & ! верно
    "z">"aaaaaa" & ! верно

> (больше либо равно)

>= — операция сравнения "БОЛЬШЕ ЛИБО РАВНО". Общая запись:

    [выражение_1]>=[выражение_2]

Если значение выражения [выражение_1] больше либо равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если первое больше второго, либо равно ему.

Примеры:

    ! 2 не меньше и не равно 4 — вернёт 0
    2>=4
    ! 5 равно 5 — вернёт -1
    5>=5
    ! 7 больше 3
    7>=3 & ! вернёт -1

Аналогично "=>" и конструкциям:

    ([выражение_1]>[выражение_2]) or ([выражение_1]=[выражение_2])
    no [выражение_1]<[выражение_2]

Сравнивать можно и текстовые значения, при этом символы сравниваются поочерёдно, и большим считается символ, стоящий ближе к концу алфавита.

    "z">="a"    & ! верно
    "zz">="z"    & ! верно
    "z">="aaaaaa" & ! верно
    "z">="z" & ! верно

! (не равно)

! — операция сравнения "НЕ РАВНО". Общая запись:

    [выражение_1]![выражение_2]

Если значение выражения [выражение_1] не равно значению выражения [выражение_2] операция вернёт -1, в противном случае вернёт 0. Иными словами: верно, если выражения не равны.

Аналогично "<>", или конструкции:

    no [выражение_1]=[выражение_2]

Не путать с оператором комментария.

Для лучшей читаемости кода лучше использовать <>.

Примеры:

    ! 2 не равно 4 — вернёт -1
    2!4
    ! 5 равно 5 — вернёт 0
    5!5

& (больше)

& — конкатенация, операция объединения строковых выражений. Общая запись:

    [$выражение 1] & [$выражение 2]

Не путайте с символом перечисления команд:

    ! в данном случае на экран будут последовательно выведены строки "26" и "27"
    "26" & "27"
    ! в данном случае на экран будет выведена строка "2627"
    ("26" & "27")

Не рекомендуется использовать данную операцию для объединения строк, поскольку строки можно объединять через +:

    ! на экран будет выведена строка "2627"
    "26"+"27"

Такая запись создаёт меньше путаницы и работает аналогичным образом.

AND

AND — логическое "И" (побитовое "И"). Общая запись:

    [#выражение 1] AND [#выражение 2]

Всё данное выражение будет верным, если верны выражения [#выражение 1] и [#выражение 2].

Примеры:

    ! обе части выражения верны, значит и всё выражение верно
    (2=2) and (3!2) & ! выражение вернёт -1 (правда)
    ! одна часть выражения не верна, значит всё выражение неверно
    (2!2) and (3!2) & ! выражение вернёт 0 (ложь)
    ! обе части выражения не верны, значит и всё выражение не верно
    (2!2) and (3=2) & ! выражение вернёт 0 (ложь)

LOC

LOC — операция проверяет наличие локации и возвращает -1, если локация есть, и — 0, если локации нет. Общая запись:

    LOC [$локация]

, где [$локация] — название локации, наличие которой необходимо проверить в игре. Выражение верно, если локация существует в игре.

Примеры:

    ! проверяет, есть ли в игре локация "начало"
    loc "начало" & ! если локация есть, возвращает -1

    ! если локация "улица" не добавлена в игру
    if (loc "улица")=0:
        act "Выйти на улицу": *pl "Я не могу выйти на улицу, дверь не отпирается."
    end

MOD

MOD — операция вычисляет остаток от деления двух чисел. Общая запись:

    [#выражение 1] MOD [#выражение 2]

, где [#выражение 1] — делимое, [#выражение 2] — делитель.

Примеры:

    ! 4 делится на 2 нацело
    4 mod 2 & ! возвращает 0
    ! 5 не делится на 2 нацело
    5 mod 2 & ! возвращает 1
    ! 13 делится на 10 нацело
    13 mod 10 & ! возвращает 3

Остаток от деления отрицательного числа будет отрицательным числом.

NO

NO — операция отрицания. Общая запись:

    NO [#выражение]

Если [#выражение] верно, то всё выражение неверно, и наоборот.

Пример:

    ! 4 равно 4 это верно, значит всё выражение неверно
    no 4=4 & ! вернёт 0 (ложь)
    ! можно читать как вопрос: четыре не равно четырём? Нет — ложь.

    ! то, что 5 равно 3, — неверно, значит всё выражение верно
    no 5=3 & ! вернёт -1 (правда)
    ! можно читать как вопрос: пять не равно трём? Да — правда.

OBJ

OBJ — операция проверяет наличие предмета в инвентаре и возвращает -1, если предмет есть, и — 0, если предмета нет. Общая запись:

    OBJ [$название]

, где [$название] — название предмета, наличие которого необходимо проверить в окне предметов. Выражение верно, если предмет добавлен в окно предметов.

Примеры:

    ! проверяет, добавлен ли в окно предметов предмет "Отвёртка"
    obj "Отвёртка" & ! если предмет есть, возвращает -1

    ! в зависимости от наличия того или иного предмета
    ! выводится то или иное действие
    if (obj "Полный кувшин")=-1:
        act "Опустошить кувшин":
            delobj "Полный кувшин"
            addobj "Пустой квушин"
            goto $curloc
        end
    elseif (obj "Пустой кувшин")=-1:
        act "Наполнить кувшин":
            addobj "Полный кувшин"
            delobj "Пустой квушин"
            goto $curloc
        end 
    end

OR

OR — логическое "ИЛИ" (побитовое "ИЛИ"). Общая запись:

    [#выражение 1] OR [#выражение 2]

Всё данное выражение будет верным, если хотя бы одно из выражений [#выражение 1] и [#выражение 2] верно.

Примеры:

    ! обе части выражения верны, значит и всё выражение верно
    (2=2) or (3!2) & ! выражение вернёт -1 (правда)
    ! одна часть выражения верна, значит всё выражение верно
    (2!2) or (3!2) & ! выражение вернёт -1 (правда)
    ! обе части выражения не верны, значит и всё выражение не верно
    (2!2) or (3=2) & ! выражение вернёт 0 (ложь) 
< Назад, к странице 174
Вперёд, к странице 176 >

Aleks Versus'HowDo-F.A.Q.'2021-2022

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2022

 

Содержание

1. В чём разница?

1.1. В чём разница между set x=10, let x=10 и x=10?

1.2. В чём разница между переменной со знаком $ и без знака $?

1.3. В чём разница между ' ' (апострофы) и " " (кавычки)?

1.4. В чём разница между *pl "строка" и просто " строка" ?

1.5. Чем отличаются эти две команды? *pl "<<$perem>>" и *pl $perem

1.6. В чём разница между dynamic и dyneval?

1.7. В чём разница между gt и goto?

1.8. Чем отличается goto от gosub?

18.1. Чем отличаются команды addqst и openqst?

Источники и дополнительные материалы

2. Вопросы о $COUNTER

2.1. Как сделать, чтобы значение переменной изменялось с течением времени?

2.2. Как сделать, чтобы из одной локации меня через пару секунд перебрасывало в другую локацию?

2.3. Как сделать, чтобы через пару секунд после входа на локацию появлялось новое действие?

2.4. Как сделать, чтобы цикл выполнялся параллельно остальному коду, а не прерывал его?

Источники и дополнительные материалы

3. Вопросы о MSG и $INPUT

3.1. Как вывести на экран отдельное окошко с текстом? | Подскажите аналог команды alert в QSP.

3.2. Как вывести на экран окошко, в котором игрок должен ввести текст? | Подскажите аналог команды prompt в QSP.

3.3. Как прикрутить возможность выбора варианта к окну msg? | Подскажите аналог команды confirm в QSP.

3.4. Как сделать ввод имени игроком?

3.5. Как увеличить число правильных ответов, которые может ввести игрок? | Как сделать варианты для ответа через $input?

Источники и дополнительные материалы

4. Вопросы о меню

4.1. Как сделать меню предмета?

4.2. Как сделать разные меню для двух и более предметов?

4.3. Как сделать меню в ссылках?

4.4. Как передавать локациям-пунктам меню аргументы?

4.5. Как делать контекстное (динамическое) меню?

4.6. Как вставить разделитель в меню?

4.7. Как вставить картинки в меню?

Источники и дополнительные материалы

5. Вопросы по $ONNEWLOC

5.1. Как сделать так, чтобы не писать один и тот же код в каждой локации?

5.2. Как сделать кнопку "Назад", работающую на каждой локации?

5.3. Почему в args на локации-обработчике перехода на новую локацию уже есть данные?

Источники и дополнительные материалы

6. Вопросы по звуковым файлам в QSP

6.1. Как вставить музыку или звук в игру?

6.2. Как запустить две звуковые дорожки?

6.3. Как при переходе на новую локацию прервать одну мелодию и запустить другую?

6.4. Как перезапустить звуковую дорожку?

6.5. Как приглушить музыку?

6.6. Как зациклить мелодию?

Источники и дополнительные материалы

7. Вопросы о гиперссылках

7.1. Как делать гиперссылки, по нажатию на которые выполняется код? | Как делать кликабельный текст? | Как сделать, чтобы по нажатию на текст что-то происходило?

7.2. Как менять цвет гиперссылки?

7.3. Как помещать в гиперссылки сложный код?

7.4. Как сделать гиперссылки без подчёркивания?

Источники и дополнительные материалы

8. Есть ли команда...

8.1. Какой командой можно очистить окно дополнительного описания?

8.2. Существует ли команда для того, чтобы получить название текущей локации?

8.3. Какой командой можно вывести текст в окно дополнительного описания?

8.4. Есть ли команда, которая делает выход из игры?

Источники и дополнительные материалы

9. Вопросы о изображениях

9.1. Как вставить картинку в игру?

9.2. Можно ли вставить в игру gif-файл?

9.3. Как вставить картинку в действие?

9.4. Как поставить картинку фоном?

9.5. Как выводить изображения послойно? Накладывать друг на друга?

9.6. Как сделать кликабельное изображение? | Как сделать так, чтобы при щелчке по изображению выполнялись какие-то действия?

9.7. Как сделать сменяемое изображение на локации?

9.8. Как сделать вывод рандомного изображения?

Источники и дополнительные материалы

10. Интерфейс, дизайн, украшения

10.1. Для чего нужен оператор REFINT, и как он работает?

10.2. Как изменить цвет фона в игре?

10.3. Как изменить формат части текста? Размер, цвет, наклон и т.д.?

10.4. Как сделать красивый фон в классическом плеере?

10.5. Хочу, чтоб в игре окна располагались определённым образом. Как это сделать?

10.6. Можно ли задавать размер окон из кода игры? Чтобы в одной локации были одни настройки, в другой — другие.

10.7. Настроил расположение окна предпросмотра, но когда выключаю его, другие окна смещаются, как это исправить?

10.8. Как изменить цвет подсветки действий?

10.9. Как изменить цвет фона для отдельного окна?

10.10. Как сделать плавное появление текста? | Как сделать плавное изменение цвета фона? | Как сделать плавное изменение цвета текста?

10.11. Как использовать в игре собственный шрифт?

10.12. С предметов можно снимать выделение, а можно ли снять выделение с действия?

Источники и дополнительные материалы

11. Вопросы об условиях

11.1. При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?

11.2. Как сделать так, чтобы действие появлялось только при определённом условии?

11.3. Видел в одной из игр, как после нажатия на действие, оно становится неактивным. Как это сделать?

11.4. Как добавить текст, который будет выводиться только при выполнении определённого условия?

11.5. Как сделать, чтобы в диалоговом окне текст набирался в зависимости от условий? Чтобы при срабатывании одного или обоих условий текст в любом случае выводился? Логическое ИЛИ (OR).

11.6. Как упростить условие с логическим И (AND)?

11.7. Как упростить взаимоисключающие условия? Логическое XOR.

Источники и дополнительные материалы

12. Вопросы о DYNAMIC

12.1. Зачем нужен оператор dynamic?

12.2. Можно ли сделать переменную с рандомным (случайным) названием?

12.3. Создаю действия с помощью цикла, но они работают неправильно. Что делать?

12.4. Почему не работает dynamic?

Источники и дополнительные материалы

13. Не работает...

13.1. Рисую таблицу и хочу зафиксировать высоту, но атрибут height не работает.

13.2. Пытаюсь использовать разные HTML-теги в игре, но они не работают — просто не выводятся. Почему?

13.3. Не работает IIF!

13.4. Пытаюсь сделать кликабельную картинку с помощью тегов MAP и AREA, но ничего не получается. | Не выводится картинка, не работает область клика, область клика смещена.

13.5. Не работает *pl в действии с goto.

13.6. В AeroQSP не работает атрибут.

13.7. Не работает гиперссылка в AeroQSP.

13.8. Не работает оператор JUMP — не может найти метку.

13.9. Не работает многострочный код. Как исправить?

13.10. Не работает многострочный код. Как исправить?

13.11. Сколько END`ов нужно добавить?

13.12. Не работает условие. Как исправить? (if skrom>10 and <15)

13.13. Не работают десятичные дроби, дробные числа, числа с запятыми!

Источники и дополнительные материалы

14. Вопросы о предметах

14.1. Как добавить предмет в окно предметов?

14.2. Как удалить предмет из окна предметов?

14.3. Как удалить все предметы?

14.4. Как добавить предмет в определённую позицию в окне предметов?

14.5. Как заменить один предмет на другой?

14.6. Как делать динамические/считаемые предметы? | Как делать стакающиеся предметы? | Как делать предметы рядом с названиями которых выводится их количество?

14.7. Как добавить предмет с картинкой но без названия?

14.8. Как сделать, чтоб при щелчке по предмету выполнялся какой-либо код?

14.9. Как снять выделение предмета? | Как сделать, чтобы выбранный предмет можно было кликнуть ещё раз?

14.10. Как сделать два списка предметов? Например для игры за разных персонажей.

14.11. Как сделать, чтобы плеер выполнял определённый код при добавлении любого предмета?

14.12. Как сделать два разных предмета с одинаковыми названиями?

14.13. Как сделать многоуровневый рюкзак? | Как сделать предметы в предметах?

14.14. Можно ли выводить предметы не в окне предметов?

Источники и дополнительные материалы

15. Вопросы о строке ввода

15.1. Зачем вообще нужна строка ввода (поле ввода)?

15.2. Как задействовать строку ввода в игре?

Источники и дополнительные материалы

16. Вопросы по вёрстке

16.1. Можно ли писать текст поверх вставленной картинки (не бэкграунда)?

16.2. Возможно ли сделать плавный переход между локациями?

16.3. Как расположить картинку справа, а текст слева?

16.4. Как ограничить размер выводимого изображения?

16.5. Как сделать рамку окна основного описания? | Как сделать, чтобы картинки шли по контуру основного окна?

16.6. Как сделать вывод предметов магазина не длинным списком, а в виде таблицы?

16.7. Можно ли зеркально отразить картинку методами плеера? | Можно ли задать максимальную или минимальную ширину элементу? | Можно ли вычислить доступное место в основном окне?

16.8. Вывожу в окно табличку, а потом текст, но между текстом и табличкой возникают пустые строки. Что это и как этого избежать?

16.9. Можно как нибудь вывести текст в два столба в классике? К примеру характеристики персонажей.

16.10. Как работать с тегами MAP и AREA? Как разметить картинку на кликабельные зоны?

Источники и дополнительные материалы

17. Вопросы о сохранениях

17.1. Как запретить игроку самостоятельно сохранять игру?

17.2. Во время теста игры делал сохранения, затем внёс в игру несколько правок, но сохранения перестали загружаться. Почему так происходит, и что теперь делать?

17.3. Как сделать чекпойнты в игре?

17.4. Как написать действие, которое при каждом клике сохраняло бы игру в файлы "1.sav" и "2.sav" поочерёдно?

Источники и дополнительные материалы

18. Вопросы о файлах и модулях

18.1. Чем отличаются команды addqst и openqst?

18.2. Как сделать лаунчер?

18.3. Мне нужно узнать, есть ли в папке файл (картинка, музыка и т.д.). Как это сделать?

18.4. Перенёс файл игры из одной папки в другую. В Quest Generator пропали все папки. Почему так происходит, и как этого избежать?

18.5. В папке с игрой стали появляться файлы с расширением .tmp. Что это за файлы, нужны они, и как избавиться от их появления?

Источники и дополнительные материалы

19. Изыски

19.1. Как использовать ASCII-графику в QSP?

19.2. Как вставить в игру видео?

19.3. Как сделать так, чтобы текст появлялся на экране постепенно? По буквам?

19.4. Как защитить игру от чита?

19.5. Как задействовать клавиатуру в игре?

19.6. Как пропустить прохождение нескольких глав, чтобы протестировать вновь написанную главу и только её?

19.7. Как из под плеера выполнить произвольную строку кода?

19.8. Как узнать, на каком устройстве запущена игра? Телефон, компьютер, планшет?

19.9. Как обновлять переменные на экране?

19.10. Как сделать, чтобы текст выводился снизу вверх?

Источники и дополнительные материалы

20. Конкретные задачи

20.1. Как сделать возврат на предыдущую локацию?

20.2. Как проверить число на чётность?

20.3. Как сделать шанс на выпадение определённой вещи? Например 25 процентный шанс на то, что в сундуке окажется золотая чаша?

20.4. Как сделать, чтобы текст выводился не внизу окна основного описания, а сверху?

20.5. Как можно удалить часть текста из описания?

20.6. Как вывести на экран HTML-разметку, не отключая режим распознавания HTML? То есть при usehtml=1.

20.7. Есть несколько переменных с разными значениями. Как получить имя переменной, в которой находится наибольшее значение?

20.8. Как в QSP сравнить два массива?

20.9. Как сделать вытягивание случайных карт из колоды? Карты вытягиваются несколько раз, но они не должны повторяться.

20.10. Как отсортировать данные? Например, список персонажей по алфавиту, или набор чисел от меньшего к большему.

20.11. Как сделать проценты?

20.12. Как решить задачу по поиску случайного набора слагаемых?

20.13. Как разредить текст пробелами?

20.14. Как сделать записную книжку в игре?

20.15. Как сделать так, чтобы на локацию можно было зайти только один раз?

20.16. Как заставить действия выводиться в нужном мне порядке?

20.17. Как сделать в игре книгу? Чтобы её можно было взять и потом прочитать?

20.18. Как сделать склад, сундук, тайник, место, в котором можно выкладывать и хранить предметы?

20.19. Как сделать выпадение случайного действия на локации?

20.20. Как сделать перемещение на случайную локацию?

20.21. Как сделать случайный предмет?

20.22. Как узнать, какие переменные есть в игре? Может для этого есть специальная команда?

20.23. Как убрать преформатирование из HTML-разметки?

Источники и дополнительные материалы

21. Вопросы по Quest Generator (v.4.0.0.Beta)

21.1. Мне часто приходится вставлять одинаковые или почти одинаковые кусочки кода. Как автоматизировать этот процесс?

21.2. Делаю преформатирование пробелами, чтобы появлялась вертикальная полоска, так нагляднее. Нет ли какой-то комбинации клавиш, чтобы не тыкать пробел по пять раз?

21.3. Как свернуть кусочек кода, написанный под комментарием? В идеале, чтоб остался один только комментарий.

Источники и дополнительные материалы

22. Вопросы о Quest Navigator (v.0.0.28)

22.1. Пишу несколько игр в Quest Navigator. Как сделать, чтобы у каждой игры было собственное оформление?

22.2. Как подключить свой шрифт к игре?

22.3. Пишу <strong>bcolor=rgb(255,200,200)</strong>, но это не меняет цвет фона игры. Как изменить цвет фона из кода QSP?

22.4. Хочу прописать игре собственный вид курсора, как это сделать?

22.5. Скопировал шаблон оформления в папку со своей игрой, но что с ним теперь делать? Не пойму, что за что отвечает.

22.6. Как узнать, на каком плеере запущена игра, на классическом QSP, или на Quest Navigator?

22.7. Как вставить видео в игру на Навигаторе?

22.8. Как делать standalone-сборку на Навигаторе? | Независимая сборка на Quest Navigator

22.9. Где в Quest Navigator править размер окна с игрой? Например мне надо, чтобы игра изначально открывалась в разрешении 1280х720.

22.10. Как выполнить JavaScript прямо из кода QSP?

22.11. Инструкция посмене оформления из кода QSP?

Источники и дополнительные материалы

23. Ограничения

23.1. Видел в справке ограничение на 100 подключаемых файлов? Это что, я не смогу использовать более ста файлов картинок и музыки?

23.2. Хочу разместить на локации около 100 действий. Это вообще возможно?

23.3. Генерирую переменные с помощью оператора dynamic, и вдруг выходит ошибка 123. Что это, и как с этим бороться?

Источники и дополнительные материалы

24. Вопросы по работе с плеерами

24.1. Как сделать так, чтобы AeroQSP запускался прямо из Quest Generator?

24.2. Как сделать StandAlone-сборку на классическом плеере? | Можно ли сделать игру так, чтобы играть без плеера? | Как сделать пакетный файл запуска, чтобы игрок тыкал иконку start и сразу начинал играть?

Источники и дополнительные материалы

Зарезервированные слова, системные переменные, спецсимволы

Операции

Операторы

Функции

Системные переменные

Иные синтаксемы

Алфавитный указатель ключевых слов, спецсимволов, синтаксем

Источники и дополнительные материалы